package cn.iocoder.yudao.module.product.spu.vo;

import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.validation.InEnumCode;
import cn.iocoder.yudao.framework.validation.InEnumValue;
import cn.iocoder.yudao.module.api.dine.enums.DineAttributeEnum;
import cn.iocoder.yudao.module.api.product.spu.enums.ProductSpuRecommendEnum;
import cn.iocoder.yudao.module.api.shop.category.eums.ShopCategoryCodeEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

@Schema(description = "用户 APP - 产品 SPU 分页 Request VO")
@Data
public class AppProductSpuPageReqVO extends PageParam {

    @Schema(description = "产品 SPU 编号，多个之间用因为逗号分隔", example = "1,3,5")
    private String ids;

    @Schema(description = "排序字段：DEFAULT-综合、PRICE-价格、SALES_COUNT-销量、CREATE_TIME-时间、RANDOM-随机", example = "DEFAULT")
    //@InEnumValue(ProductSpuSortFieldEnum.class)
    private String sortField;

    @Schema(description = "是否升序", example = "true")
    private Boolean sortAsc;

    @Schema(description = "关键字", example = "好看")
    private String keyword;

    @Schema(description = "是否属于生活商圈，true 表示只查询生活商圈的产品", example = "false")
    private Boolean o2o;

    @Schema(description = "前端请求的页签类型：ALL-全部、FOR_SALE-销售中、IN_WAREHOUSE-仓库中/已下架、SOLD_OUT-已售罄、RECYCLE_BIN-回收站、ALERT_STOCK-警戒库存", example = "ALL")
    private String tabType;

    @Schema(description = "推荐类型：0-无、1-精选、2-爆款、3-新品、4-补贴", example = "0")
    @InEnumValue(ProductSpuRecommendEnum.class)
    private Integer recommend;

    @Schema(description = "是否积分产品", example = "false")
    private Boolean isIntegral;

    @Schema(description = "是否置顶", example = "false")
    private Boolean isSticky;

    @Schema(description = "店铺编号", example = "1")
    private Long shopId;

    @Schema(description = "店铺编号，多个之间用因为逗号分隔", example = "1,2,3")
    private String shopIds;

    @Schema(description = "主营类目编码，如：mall、food、hotel", example = "mall")
    @InEnumCode(ShopCategoryCodeEnum.class)
    private String platformCategoryCode;

    @Schema(description = "行业类目编号", example = "1")
    private Long platformCategoryId;

    @Schema(description = "行业类目编号，多个之间用因为逗号分隔", example = "1,2")
    private String platformCategoryIds;

    @Schema(description = "产品分类编号", example = "1")
    private Long categoryId;

    @Schema(description = "产品分类编号，多个之间用因为逗号分隔", example = "1,2")
    private String categoryIds;

    @Schema(description = "店铺所在城市编码，国家民政部/统计局的4位或6位数编码", example = "520100")
    private String cityCode;

    @Schema(description = "是否支持收益豆全额抵扣", example = "false")
    private Boolean supportCryptocurrencyFullDeduction;

    @Schema(description = "菜肴属性：0-无、1-主食、2-荤菜、3-素菜、4-汤、5-调料、6-饮品、7-水果、20-锅底、50-套餐、98-餐盒、99-备注")
    @InEnumValue(DineAttributeEnum.class)
    private Integer dishAttribute;

}
